package top.zhangjianyong.blog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import top.zhangjianyong.blog.entity.po.BlogComment;
import top.zhangjianyong.blog.params.comment.*;
import top.zhangjianyong.blog.response.ApiResponse;

/**
 * 博客评论服务接口
 *
 * @author zhangjianyong
 * @since 2024/12/19
 */
public interface BlogCommentService extends IService<BlogComment> {

  /** 保存评论 */
  ApiResponse save(CommentSaveParam param);

  /** 获取评论树 */
  ApiResponse getCommentTree(CommentTreeParam param);

  /** 加载更多子评论 */
  ApiResponse loadMoreChildren(LoadMoreChildrenParam param);

  /** 点赞/取消点赞评论 */
  ApiResponse likeComment(CommentLikeParam param);

  /** 获取评论统计信息 */
  ApiResponse getCommentStats(Long blogId);

  /** 管理后台分页查询 */
  ApiResponse pageForAdmin(CommentPageParam param);

  /** 审核评论状态 */
  ApiResponse changeStatus(CommentStatusChangeParam param);

  /** 置顶/取消置顶评论 */
  ApiResponse toggleTop(Long commentId);

  /** 获取单个评论详情 */
  ApiResponse get(CommentGetParam param);

  /** 统计用户评论数 */
  long countByUser(Long userId);

  /** 获取评论的完整树状结构（用于管理后台审核） */
  ApiResponse getCommentTreeForAdmin(CommentGetParam param);
}
